﻿
using System;
using System.Collections;
using System.IO;
using System.Data.SqlClient;
using System.Globalization;
using System.Runtime.Serialization;
using ProtoBuf;/*https://github.com/ServiceStack/ServiceStack/tree/master/lib*/
using ServiceStack.Text;/*https://github.com/ServiceStack/ServiceStack.Text*/
using V82;
using V82.ОбщиеОбъекты;
using V82.ДокументыСсылка;
using V82.ДокументыСсылка;
using V82.Перечисления;//Ссылка;
namespace V82.ДокументыСсылка
{
	///<summary>
	///(Регл)
	///</summary>
	[ProtoContract]
	[DataContract]
	public partial class НачислениеПоБольничномуЛисту:ДокументСсылка,IСериализаторProtoBuf,IСериализаторJson
	{
		public static readonly Guid ГуидКласса = new Guid("36f502cd-06ad-4d57-9175-422e12df7e16");
		public static readonly DateTime ВерсияКласса = DateTime.ParseExact("20120928011952.000", new string[] {"yyyyMMddHHmmss.fff"}, CultureInfo.InvariantCulture, DateTimeStyles.None);
		public static readonly long КонтрольнаяСуммаКласса = 123;
		[DataMember]
		[ProtoMember(1)]
		public Guid Ссылка {get;set;}
		[DataMember]
		[ProtoMember(2)]
		public long Версия {get;set;}
		public string ВерсияДанных {get;set;}
		/*static хэш сумма состава и порядка реквизитов*/
		/*версия класса восстановленного из пакета*/
		public bool ПометкаУдаления {get;set;}
		public DateTime Дата {get;set;}
		public DateTime ПрефиксНомера {get;set;}
		public string/*11*/ Номер {get;set;}
		public bool Проведен {get;set;}
		public DateTime ПериодРегистрации {get;set;}//Период регистрации
		public V82.СправочникиСсылка.Организации Организация {get;set;}
		///<summary>
		///Любая дополнительная информация
		///</summary>
		public string/*(0)*/ Комментарий {get;set;}
		public V82.СправочникиСсылка.Пользователи Ответственный {get;set;}
		public V82.СправочникиСсылка.СотрудникиОрганизаций Сотрудник {get;set;}
		public V82.СправочникиСсылка.ФизическиеЛица Физлицо {get;set;}//Физическое лицо
		public V82.Перечисления/*Ссылка*/.ПричиныНетрудоспособности ПричинаНетрудоспособности {get;set;}//Причина нетрудоспособности
		///<summary>
		///Процент оплаты
		///</summary>
		public decimal/*(6.2)*/ ПроцентОплаты {get;set;}//Процент оплаты
		public bool ЯвляетсяПродолжениемБолезни {get;set;}//Является продолжением болезни
		public V82.ДокументыСсылка.НачислениеПоБольничномуЛисту ПервичныйБольничныйЛист {get;set;}//Первичный больничный лист
		///<summary>
		///Дата начала события, оплачиваемого по среднему заработку
		///</summary>
		public DateTime ДатаНачалаСобытия {get;set;}//Дата начала события
		public DateTime ДатаНачала {get;set;}//Дата начала
		public DateTime ДатаНачалаОплаты {get;set;}//Дата начала оплаты
		public DateTime ДатаОкончания {get;set;}//Дата окончания
		public DateTime ДатаНарушенияРежима {get;set;}//Дата нарушения режима
		public bool ПособиеОтражаетсяВРеглУчетеТекущимДокументом {get;set;}//Пособие отражается в регл учете текущим документом
		public V82.Перечисления/*Ссылка*/.ВидыОграниченияПособия ОграничениеПособия {get;set;}//Ограничение пособия
		public string/*(12)*/ НомерВходящегоДокумента {get;set;}//Номер документа сторонней организации
		public string/*(10)*/ СерияВходящегоДокумента {get;set;}//Серия документа сторонней организации
		public V82.ДокументыСсылка.НачислениеПоБольничномуЛисту ПерерассчитываемыйДокумент {get;set;}//Перерассчитываемый документ
		public V82.Перечисления/*Ссылка*/.ПричиныНетрудоспособности ПричинаНетрудоспособностиПереходногоПериода {get;set;}//Причина нетрудоспособности переходного периода
		///<summary>
		///Процент оплаты
		///</summary>
		public decimal/*(6.2)*/ ПроцентОплатыПереходногоПериода {get;set;}//Процент оплаты переходного периода
		public V82.Перечисления/*Ссылка*/.ВидыОграниченияПособия ОграничениеПособияПереходногоПериода {get;set;}//Ограничение пособия переходного периода
		public V82.Перечисления/*Ссылка*/.СлучаиУходаЗаБольнымиДетьми СлучайУходаЗаБольнымРебенкомПереходногоПериода {get;set;}//Случай ухода за больным ребенком переходного периода
		public V82.Перечисления/*Ссылка*/.СтратегииОтраженияВРеглУчетеНачислений СтратегияОтраженияВУчете {get;set;}//Стратегия отражения в учете
		public V82.ДокументыСсылка.ПриемНаРаботуВОрганизацию УдалитьПриказ {get;set;}//Удалить приказ
		public decimal/*(8.5)*/ ПодпадаетПодЕНВД {get;set;}//Подпадает под ЕНВД
		public V82.Перечисления/*Ссылка*/.СлучаиУходаЗаБольнымиДетьми СлучайУходаЗаБольнымРебенком {get;set;}//Случай ухода за больным ребенком
		public decimal/*(3)*/ ДнейОплаты {get;set;}//Дней оплаты
		public object ВидРасчета {get;set;}//Вид расчета
		public bool ДоплачиватьДоПолногоСреднегоЗаработка {get;set;}//Доплачивать до полного среднего заработка
		public object ВидРасчетаДоплаты {get;set;}//Вид расчета доплаты
		///<summary>
		///Дата начала расчетного периода
		///</summary>
		public DateTime ПериодРасчетаСреднегоЗаработкаНачало {get;set;}//Период расчета среднего заработка начало
		///<summary>
		///Дата окончания расчетного периода
		///</summary>
		public DateTime ПериодРасчетаСреднегоЗаработкаОкончание {get;set;}//Период расчета среднего заработка окончание
		///<summary>
		///Процент оплаты
		///</summary>
		public decimal/*(6.2)*/ ПроцентОплатыБезЛьгот {get;set;}//Процент оплаты без льгот
		public V82.Перечисления/*Ссылка*/.ВидыОграниченияПособия ОграничениеПособияБезЛьгот {get;set;}//Ограничение пособия без льгот
		public bool ПрименятьЛьготыПриНачисленииПособия {get;set;}//Применять льготы при начислении пособия
		public V82.Перечисления/*Ссылка*/.ВыплатыПособийЗаСчетФедеральногоБюджета ВыплатаЗаСчетФедеральногоБюджета {get;set;}//Выплата за счет федерального бюджета
		public object ВидРасчетаЗаСчетРаботодателя {get;set;}//Вид расчета за счет работодателя
		public bool УчитыватьЗаработокПредыдущихСтрахователей {get;set;}//Учитывать заработок предыдущих страхователей
		public decimal/*(1)*/ ДнейОплатыРаботодателем {get;set;}//Дней оплаты работодателем
		public bool НеВыплачиватьПособие {get;set;}//Не выплачивать пособие
		public bool РасчетПоПравилам2010Года {get;set;}//Расчет по правилам 2010 года
		public string/*(2)*/ УсловияИсчисленияКод1 {get;set;}//Условия исчисления: код
		public string/*(2)*/ УсловияИсчисленияКод2 {get;set;}//Условия исчисления: код
		public string/*(2)*/ УсловияИсчисленияКод3 {get;set;}//Условия исчисления: код
		public decimal/*(2)*/ СтажЛет {get;set;}//Стаж: лет
		public decimal/*(2)*/ СтажМесяцев {get;set;}//Стаж: месяцев
		public decimal/*(2)*/ СтажБезНестраховыхПериодовЛет {get;set;}//Стаж: лет
		public decimal/*(2)*/ СтажБезНестраховыхПериодовСтажМесяцев {get;set;}//Стаж: месяцев
		public bool ПеречислятьПособиеПочтовымПереводом {get;set;}//Перечислять пособие почтовым переводом
		public V82.СправочникиСсылка.Банки Банк {get;set;}
		public string/*(100)*/ НаименованиеБанка {get;set;}//Наименование банка
		public string/*(9)*/ БИКБанка {get;set;}//БИК банка
		public string/*(20)*/ НомерЛицевогоСчета {get;set;}//Номер лицевого счета
		public string/*(240)*/ АдресПочтовый {get;set;}//Адрес почтовый
		///<summary>
		///(Общ)
		///</summary>
		public string/*(40)*/ Фамилия {get;set;}
		///<summary>
		///(Общ)
		///</summary>
		public string/*(40)*/ Имя {get;set;}
		///<summary>
		///(Общ)
		///</summary>
		public string/*(40)*/ Отчество {get;set;}
		public V82.СправочникиСсылка.ДокументыУдостоверяющиеЛичность ВидДокумента {get;set;}//Вид документа
		public string/*(14)*/ СерияДокумента {get;set;}//Серия документа
		public string/*(14)*/ НомерДокумента {get;set;}//Номер документа
		public DateTime ДатаВыдачиДокумента {get;set;}//Дата выдачи документа
		public DateTime ДатаДействияДокумента {get;set;}//Дата действия документа
		public DateTime ПериодПростояС {get;set;}//Период простоя: с
		public DateTime ПериодПростояПо {get;set;}//Период простоя: по
		public bool РасчетПособияИзТарифнойСтавки {get;set;}//Расчет пособия из тарифной ставки
		public V82.СправочникиСсылка.ДолжностиОрганизаций ДолжностьУполномоченного {get;set;}//Должность уполномоченного
		public V82.СправочникиСсылка.ФизическиеЛица Уполномоченный {get;set;}
		public bool ПоставленаНаУчетВРанниеСрокиБеременности {get;set;}//Поставлена на учет в ранние сроки беременности
		public DateTime ДатаВыдачиБольничного {get;set;}//Дата выдачи больничного
		public string/*(2)*/ КодПричиныНетрудоспособности {get;set;}//Код причины нетрудоспособности
		public string/*(3)*/ ДополнительныйКодПричиныНетрудоспособности {get;set;}//Дополнительный код причины нетрудоспособности
		public string/*(2)*/ ВторойКодПричиныНетрудоспособности {get;set;}//Второй код причины нетрудоспособности
		public DateTime ДатаИзмененияКодаПричиныНетрудоспособности {get;set;}//Дата изменения кода причины нетрудоспособности
		public DateTime ДатаСправкиБеременной {get;set;}//Дата справки беременной
		public DateTime ПериодНахожденияВСтационареСРебенкомС {get;set;}//Период нахождения в стационаре с ребенком: с
		public DateTime ПериодНахожденияВСтационареСРебенкомПо {get;set;}//Период нахождения в стационаре с ребенком: по
		public string/*(2)*/ КодНарушенияРежима {get;set;}//Код нарушения режима
		public DateTime ДатаРегистрацииДокументовМСЭ {get;set;}//Дата регистрации документов МСЭ
		public bool УстановленаИзмененаГруппаИнвалидности {get;set;}//Установлена/изменена группа инвалидности
		public DateTime ДатаВыходаНаРаботу {get;set;}//Дата выхода на работу
		public bool ЯвляетсяДубликатом {get;set;}//Является дубликатом
		public string/*(240)*/ АдресЛПУ {get;set;}//Адрес ЛПУ
		public string/*(0)*/ НаименованиеЛПУ {get;set;}//Наименование ЛПУ
		public string/*(15)*/ ОГРН_ЛПУ {get;set;}//ОГРН ЛПУ
		public string/*(12)*/ НомерЛисткаПоОсновномуМестуРаботы {get;set;}//Номер листка по основному месту работы
		public DateTime ДатаОкончанияПутевки {get;set;}//Дата окончания путевки
		public string/*(10)*/ НомерПутевки {get;set;}//Номер путевки
		public string/*(15)*/ ОГРН_Санатория {get;set;}//ОГРН санатория
		public string/*(12)*/ НомерЛисткаПродолжения {get;set;}//Номер листка продолжения
		public DateTime ДатаНаправленияВБюроМСЭ {get;set;}//Дата направления в бюро МСЭ
		public DateTime ДатаОсвидетельствованияМСЭ {get;set;}//Дата освидетельствования МСЭ
		public string/*(2)*/ НовыйСтатусНетрудопособного {get;set;}//Новый статус нетрудопособного
		public DateTime ДатаНовыйСтатусНетрудопособного {get;set;}//Дата новый статус нетрудопособного
		public string/*(0)*/ КемВыданДокумент {get;set;}//Кем выдан документ
		public string/*(1)*/ ГруппаИнвалидности {get;set;}//Группа инвалидности
		public string/*(2)*/ КодПричиныПерерасчета {get;set;}//Код причины перерасчета
		public decimal/*(15.2)*/ НДФЛсПособия {get;set;}//НДФЛ с пособия
		///<summary>
		///Корреспонденский счет банка
		///</summary>
		public string/*(20)*/ КоррСчетБанка {get;set;}//Корр. счет банка
		public string/*(14)*/ НомерСправкиБеременной {get;set;}//Номер справки беременной
		public string/*(100)*/ НаименованиеДокументаНаПроживание {get;set;}//Наименование документа на проживание
		public string/*(14)*/ СерияДокументаНаПроживание {get;set;}//Серия документа на проживание
		public string/*(14)*/ НомерДокументаНаПроживание {get;set;}//Номер документа на проживание
		public DateTime ДатаВыдачиДокументаНаПроживание {get;set;}//Дата выдачи документа на проживание
		public string/*(240)*/ АдресРегистрации {get;set;}//Адрес регистрации
		public string/*(15)*/ Телефон {get;set;}
		public decimal/*(15.2)*/ ТарифнаяСтавкаОклад {get;set;}//Тарифная ставка оклад
		public decimal/*(15.2)*/ СреднедневнойЗаработокНаПериодПростоя {get;set;}//Среднедневной заработок на период простоя
		public string/*(30)*/ ТелефонСоставителя {get;set;}//Телефон составителя
		public string/*(17)*/ АдресПочтовыйКодПоКЛАДР {get;set;}//Адрес почтовый код по КЛАДР
		public string/*(17)*/ АдресРегистрацииКодПоКЛАДР {get;set;}//Адрес регистрации код по КЛАДР
		public string/*(17)*/ АдресЛПУКодПоКЛАДР {get;set;}//Адрес ЛПУКод по КЛАДР
		public V82.СправочникиСсылка.МедицинскиеОрганизации ЛПУ {get;set;}
		public bool НовыйПорядокРасчетаПособияПоМатеринствуПриИсправлении {get;set;}//Новый порядок расчета пособия по материнству при исправлении
		
		public НачислениеПоБольничномуЛисту()
		{
		}
		
		public НачислениеПоБольничномуЛисту(byte[] УникальныйИдентификатор)
		{
			using (var Подключение = new SqlConnection(СтрокаСоединения))
			{
				Подключение.Open();
				using (var Команда = Подключение.CreateCommand())
				{
					Команда.CommandText = @"Select top 1 
					_IDRRef [Ссылка]
					,_Version [Версия]
					,_Marked [ПометкаУдаления]
					,_Number [Номер]
					,_Fld6376 [ПериодРегистрации]
					,_Fld6377RRef [Организация]
					,_Fld6378 [Комментарий]
					,_Fld6379RRef [Ответственный]
					,_Fld21604RRef [Сотрудник]
					,_Fld6380RRef [Физлицо]
					,_Fld6382RRef [ПричинаНетрудоспособности]
					,_Fld6383 [ПроцентОплаты]
					,_Fld26875 [ЯвляетсяПродолжениемБолезни]
					,_Fld6384RRef [ПервичныйБольничныйЛист]
					,_Fld26876 [ДатаНачалаСобытия]
					,_Fld6385 [ДатаНачала]
					,_Fld26877 [ДатаНачалаОплаты]
					,_Fld6386 [ДатаОкончания]
					,_Fld18769 [ДатаНарушенияРежима]
					,_Fld21605 [ПособиеОтражаетсяВРеглУчетеТекущимДокументом]
					,_Fld6387RRef [ОграничениеПособия]
					,_Fld6388 [НомерВходящегоДокумента]
					,_Fld6389 [СерияВходящегоДокумента]
					,_Fld6390RRef [ПерерассчитываемыйДокумент]
					,_Fld18765RRef [ПричинаНетрудоспособностиПереходногоПериода]
					,_Fld18766 [ПроцентОплатыПереходногоПериода]
					,_Fld18767RRef [ОграничениеПособияПереходногоПериода]
					,_Fld18768RRef [СлучайУходаЗаБольнымРебенкомПереходногоПериода]
					,_Fld21606RRef [СтратегияОтраженияВУчете]
					,_Fld6381RRef [УдалитьПриказ]
					,_Fld21607 [ПодпадаетПодЕНВД]
					,_Fld18763RRef [СлучайУходаЗаБольнымРебенком]
					,_Fld18764 [ДнейОплаты]
					,_Fld21608RRef [ВидРасчета]
					,_Fld26878 [ДоплачиватьДоПолногоСреднегоЗаработка]
					,_Fld26879RRef [ВидРасчетаДоплаты]
					,_Fld26880 [ПериодРасчетаСреднегоЗаработкаНачало]
					,_Fld26881 [ПериодРасчетаСреднегоЗаработкаОкончание]
					,_Fld26882 [ПроцентОплатыБезЛьгот]
					,_Fld26883RRef [ОграничениеПособияБезЛьгот]
					,_Fld26884 [ПрименятьЛьготыПриНачисленииПособия]
					,_Fld26885RRef [ВыплатаЗаСчетФедеральногоБюджета]
					,_Fld26886RRef [ВидРасчетаЗаСчетРаботодателя]
					,_Fld26887 [УчитыватьЗаработокПредыдущихСтрахователей]
					,_Fld26888 [ДнейОплатыРаботодателем]
					,_Fld26889 [НеВыплачиватьПособие]
					,_Fld26890 [РасчетПоПравилам2010Года]
					,_Fld26891 [УсловияИсчисленияКод1]
					,_Fld26892 [УсловияИсчисленияКод2]
					,_Fld26893 [УсловияИсчисленияКод3]
					,_Fld26894 [СтажЛет]
					,_Fld26895 [СтажМесяцев]
					,_Fld26896 [СтажБезНестраховыхПериодовЛет]
					,_Fld26897 [СтажБезНестраховыхПериодовСтажМесяцев]
					,_Fld26898 [ПеречислятьПособиеПочтовымПереводом]
					,_Fld26899RRef [Банк]
					,_Fld26900 [НаименованиеБанка]
					,_Fld26901 [БИКБанка]
					,_Fld26902 [НомерЛицевогоСчета]
					,_Fld26903 [АдресПочтовый]
					,_Fld26904 [Фамилия]
					,_Fld26905 [Имя]
					,_Fld26906 [Отчество]
					,_Fld26907RRef [ВидДокумента]
					,_Fld26908 [СерияДокумента]
					,_Fld26909 [НомерДокумента]
					,_Fld26910 [ДатаВыдачиДокумента]
					,_Fld26911 [ДатаДействияДокумента]
					,_Fld26912 [ПериодПростояС]
					,_Fld26913 [ПериодПростояПо]
					,_Fld26914 [РасчетПособияИзТарифнойСтавки]
					,_Fld26915RRef [ДолжностьУполномоченного]
					,_Fld26916RRef [Уполномоченный]
					,_Fld26917 [ПоставленаНаУчетВРанниеСрокиБеременности]
					,_Fld26918 [ДатаВыдачиБольничного]
					,_Fld26919 [КодПричиныНетрудоспособности]
					,_Fld26920 [ДополнительныйКодПричиныНетрудоспособности]
					,_Fld26921 [ВторойКодПричиныНетрудоспособности]
					,_Fld26922 [ДатаИзмененияКодаПричиныНетрудоспособности]
					,_Fld26923 [ДатаСправкиБеременной]
					,_Fld26924 [ПериодНахожденияВСтационареСРебенкомС]
					,_Fld26925 [ПериодНахожденияВСтационареСРебенкомПо]
					,_Fld26926 [КодНарушенияРежима]
					,_Fld26927 [ДатаРегистрацииДокументовМСЭ]
					,_Fld26928 [УстановленаИзмененаГруппаИнвалидности]
					,_Fld26929 [ДатаВыходаНаРаботу]
					,_Fld26930 [ЯвляетсяДубликатом]
					,_Fld26931 [АдресЛПУ]
					,_Fld26932 [НаименованиеЛПУ]
					,_Fld26933 [ОГРН_ЛПУ]
					,_Fld26934 [НомерЛисткаПоОсновномуМестуРаботы]
					,_Fld26935 [ДатаОкончанияПутевки]
					,_Fld26936 [НомерПутевки]
					,_Fld26937 [ОГРН_Санатория]
					,_Fld26938 [НомерЛисткаПродолжения]
					,_Fld26939 [ДатаНаправленияВБюроМСЭ]
					,_Fld26940 [ДатаОсвидетельствованияМСЭ]
					,_Fld26941 [НовыйСтатусНетрудопособного]
					,_Fld26942 [ДатаНовыйСтатусНетрудопособного]
					,_Fld26943 [КемВыданДокумент]
					,_Fld26944 [ГруппаИнвалидности]
					,_Fld26945 [КодПричиныПерерасчета]
					,_Fld26946 [НДФЛсПособия]
					,_Fld26947 [КоррСчетБанка]
					,_Fld26948 [НомерСправкиБеременной]
					,_Fld26949 [НаименованиеДокументаНаПроживание]
					,_Fld26950 [СерияДокументаНаПроживание]
					,_Fld26951 [НомерДокументаНаПроживание]
					,_Fld26952 [ДатаВыдачиДокументаНаПроживание]
					,_Fld26953 [АдресРегистрации]
					,_Fld26954 [Телефон]
					,_Fld26955 [ТарифнаяСтавкаОклад]
					,_Fld26956 [СреднедневнойЗаработокНаПериодПростоя]
					,_Fld26957 [ТелефонСоставителя]
					,_Fld26958 [АдресПочтовыйКодПоКЛАДР]
					,_Fld26959 [АдресРегистрацииКодПоКЛАДР]
					,_Fld26960 [АдресЛПУКодПоКЛАДР]
					,_Fld26961RRef [ЛПУ]
					,_Fld26962 [НовыйПорядокРасчетаПособияПоМатеринствуПриИсправлении]
					From _Document323(NOLOCK)
					Where _IDRRef=@УникальныйИдентификатор";
					Команда.Parameters.AddWithValue("УникальныйИдентификатор", УникальныйИдентификатор);
					using (var Читалка = Команда.ExecuteReader())
					{
						if (Читалка.Read())
						{
							//ToDo: Читать нужно через GetValues()
							Ссылка = new Guid((byte[])Читалка.GetValue(0));
							var ПотокВерсии = ((byte[])Читалка.GetValue(1));
							Array.Reverse(ПотокВерсии);
							Версия =  BitConverter.ToInt64(ПотокВерсии, 0);
							ВерсияДанных =  Convert.ToBase64String(ПотокВерсии);
							ПометкаУдаления = ((byte[])Читалка.GetValue(2))[0]==1;
							Номер = Читалка.GetString(3);
							ПериодРегистрации = Читалка.GetDateTime(4);
							Комментарий = Читалка.GetString(6);
							ПричинаНетрудоспособности = V82.Перечисления/*Ссылка*/.ПричиныНетрудоспособности.ПустаяСсылка.Получить((byte[])Читалка.GetValue(10));
							ПроцентОплаты = Читалка.GetDecimal(11);
							ЯвляетсяПродолжениемБолезни = ((byte[])Читалка.GetValue(12))[0]==1;
							ПервичныйБольничныйЛист = new V82.ДокументыСсылка.НачислениеПоБольничномуЛисту((byte[])Читалка.GetValue(13));
							ДатаНачалаСобытия = Читалка.GetDateTime(14);
							ДатаНачала = Читалка.GetDateTime(15);
							ДатаНачалаОплаты = Читалка.GetDateTime(16);
							ДатаОкончания = Читалка.GetDateTime(17);
							ДатаНарушенияРежима = Читалка.GetDateTime(18);
							ПособиеОтражаетсяВРеглУчетеТекущимДокументом = ((byte[])Читалка.GetValue(19))[0]==1;
							ОграничениеПособия = V82.Перечисления/*Ссылка*/.ВидыОграниченияПособия.ПустаяСсылка.Получить((byte[])Читалка.GetValue(20));
							НомерВходящегоДокумента = Читалка.GetString(21);
							СерияВходящегоДокумента = Читалка.GetString(22);
							ПерерассчитываемыйДокумент = new V82.ДокументыСсылка.НачислениеПоБольничномуЛисту((byte[])Читалка.GetValue(23));
							ПричинаНетрудоспособностиПереходногоПериода = V82.Перечисления/*Ссылка*/.ПричиныНетрудоспособности.ПустаяСсылка.Получить((byte[])Читалка.GetValue(24));
							ПроцентОплатыПереходногоПериода = Читалка.GetDecimal(25);
							ОграничениеПособияПереходногоПериода = V82.Перечисления/*Ссылка*/.ВидыОграниченияПособия.ПустаяСсылка.Получить((byte[])Читалка.GetValue(26));
							СлучайУходаЗаБольнымРебенкомПереходногоПериода = V82.Перечисления/*Ссылка*/.СлучаиУходаЗаБольнымиДетьми.ПустаяСсылка.Получить((byte[])Читалка.GetValue(27));
							СтратегияОтраженияВУчете = V82.Перечисления/*Ссылка*/.СтратегииОтраженияВРеглУчетеНачислений.ПустаяСсылка.Получить((byte[])Читалка.GetValue(28));
							УдалитьПриказ = new V82.ДокументыСсылка.ПриемНаРаботуВОрганизацию((byte[])Читалка.GetValue(29));
							ПодпадаетПодЕНВД = Читалка.GetDecimal(30);
							СлучайУходаЗаБольнымРебенком = V82.Перечисления/*Ссылка*/.СлучаиУходаЗаБольнымиДетьми.ПустаяСсылка.Получить((byte[])Читалка.GetValue(31));
							ДнейОплаты = Читалка.GetDecimal(32);
							ДоплачиватьДоПолногоСреднегоЗаработка = ((byte[])Читалка.GetValue(34))[0]==1;
							ПериодРасчетаСреднегоЗаработкаНачало = Читалка.GetDateTime(36);
							ПериодРасчетаСреднегоЗаработкаОкончание = Читалка.GetDateTime(37);
							ПроцентОплатыБезЛьгот = Читалка.GetDecimal(38);
							ОграничениеПособияБезЛьгот = V82.Перечисления/*Ссылка*/.ВидыОграниченияПособия.ПустаяСсылка.Получить((byte[])Читалка.GetValue(39));
							ПрименятьЛьготыПриНачисленииПособия = ((byte[])Читалка.GetValue(40))[0]==1;
							ВыплатаЗаСчетФедеральногоБюджета = V82.Перечисления/*Ссылка*/.ВыплатыПособийЗаСчетФедеральногоБюджета.ПустаяСсылка.Получить((byte[])Читалка.GetValue(41));
							УчитыватьЗаработокПредыдущихСтрахователей = ((byte[])Читалка.GetValue(43))[0]==1;
							ДнейОплатыРаботодателем = Читалка.GetDecimal(44);
							НеВыплачиватьПособие = ((byte[])Читалка.GetValue(45))[0]==1;
							РасчетПоПравилам2010Года = ((byte[])Читалка.GetValue(46))[0]==1;
							УсловияИсчисленияКод1 = Читалка.GetString(47);
							УсловияИсчисленияКод2 = Читалка.GetString(48);
							УсловияИсчисленияКод3 = Читалка.GetString(49);
							СтажЛет = Читалка.GetDecimal(50);
							СтажМесяцев = Читалка.GetDecimal(51);
							СтажБезНестраховыхПериодовЛет = Читалка.GetDecimal(52);
							СтажБезНестраховыхПериодовСтажМесяцев = Читалка.GetDecimal(53);
							ПеречислятьПособиеПочтовымПереводом = ((byte[])Читалка.GetValue(54))[0]==1;
							НаименованиеБанка = Читалка.GetString(56);
							БИКБанка = Читалка.GetString(57);
							НомерЛицевогоСчета = Читалка.GetString(58);
							АдресПочтовый = Читалка.GetString(59);
							Фамилия = Читалка.GetString(60);
							Имя = Читалка.GetString(61);
							Отчество = Читалка.GetString(62);
							СерияДокумента = Читалка.GetString(64);
							НомерДокумента = Читалка.GetString(65);
							ДатаВыдачиДокумента = Читалка.GetDateTime(66);
							ДатаДействияДокумента = Читалка.GetDateTime(67);
							ПериодПростояС = Читалка.GetDateTime(68);
							ПериодПростояПо = Читалка.GetDateTime(69);
							РасчетПособияИзТарифнойСтавки = ((byte[])Читалка.GetValue(70))[0]==1;
							ПоставленаНаУчетВРанниеСрокиБеременности = ((byte[])Читалка.GetValue(73))[0]==1;
							ДатаВыдачиБольничного = Читалка.GetDateTime(74);
							КодПричиныНетрудоспособности = Читалка.GetString(75);
							ДополнительныйКодПричиныНетрудоспособности = Читалка.GetString(76);
							ВторойКодПричиныНетрудоспособности = Читалка.GetString(77);
							ДатаИзмененияКодаПричиныНетрудоспособности = Читалка.GetDateTime(78);
							ДатаСправкиБеременной = Читалка.GetDateTime(79);
							ПериодНахожденияВСтационареСРебенкомС = Читалка.GetDateTime(80);
							ПериодНахожденияВСтационареСРебенкомПо = Читалка.GetDateTime(81);
							КодНарушенияРежима = Читалка.GetString(82);
							ДатаРегистрацииДокументовМСЭ = Читалка.GetDateTime(83);
							УстановленаИзмененаГруппаИнвалидности = ((byte[])Читалка.GetValue(84))[0]==1;
							ДатаВыходаНаРаботу = Читалка.GetDateTime(85);
							ЯвляетсяДубликатом = ((byte[])Читалка.GetValue(86))[0]==1;
							АдресЛПУ = Читалка.GetString(87);
							НаименованиеЛПУ = Читалка.GetString(88);
							ОГРН_ЛПУ = Читалка.GetString(89);
							НомерЛисткаПоОсновномуМестуРаботы = Читалка.GetString(90);
							ДатаОкончанияПутевки = Читалка.GetDateTime(91);
							НомерПутевки = Читалка.GetString(92);
							ОГРН_Санатория = Читалка.GetString(93);
							НомерЛисткаПродолжения = Читалка.GetString(94);
							ДатаНаправленияВБюроМСЭ = Читалка.GetDateTime(95);
							ДатаОсвидетельствованияМСЭ = Читалка.GetDateTime(96);
							НовыйСтатусНетрудопособного = Читалка.GetString(97);
							ДатаНовыйСтатусНетрудопособного = Читалка.GetDateTime(98);
							КемВыданДокумент = Читалка.GetString(99);
							ГруппаИнвалидности = Читалка.GetString(100);
							КодПричиныПерерасчета = Читалка.GetString(101);
							НДФЛсПособия = Читалка.GetDecimal(102);
							КоррСчетБанка = Читалка.GetString(103);
							НомерСправкиБеременной = Читалка.GetString(104);
							НаименованиеДокументаНаПроживание = Читалка.GetString(105);
							СерияДокументаНаПроживание = Читалка.GetString(106);
							НомерДокументаНаПроживание = Читалка.GetString(107);
							ДатаВыдачиДокументаНаПроживание = Читалка.GetDateTime(108);
							АдресРегистрации = Читалка.GetString(109);
							Телефон = Читалка.GetString(110);
							ТарифнаяСтавкаОклад = Читалка.GetDecimal(111);
							СреднедневнойЗаработокНаПериодПростоя = Читалка.GetDecimal(112);
							ТелефонСоставителя = Читалка.GetString(113);
							АдресПочтовыйКодПоКЛАДР = Читалка.GetString(114);
							АдресРегистрацииКодПоКЛАДР = Читалка.GetString(115);
							АдресЛПУКодПоКЛАДР = Читалка.GetString(116);
							НовыйПорядокРасчетаПособияПоМатеринствуПриИсправлении = ((byte[])Читалка.GetValue(118))[0]==1;
							//return Ссылка;
						}
						else
						{
							//return null;
						}
					}
				}
			}
		}
		
		public V82.ДокументыОбъект.НачислениеПоБольничномуЛисту  ПолучитьОбъект()
		{
			var Объект = new V82.ДокументыОбъект.НачислениеПоБольничномуЛисту();
			Объект._ЭтоНовый = false;
			Объект.Ссылка = Ссылка;
			Объект.Версия = Версия;
			Объект.ПометкаУдаления = ПометкаУдаления;
			Объект.Номер = Номер;
			Объект.ПериодРегистрации = ПериодРегистрации;
			Объект.Организация = Организация;
			Объект.Комментарий = Комментарий;
			Объект.Ответственный = Ответственный;
			Объект.Сотрудник = Сотрудник;
			Объект.Физлицо = Физлицо;
			Объект.ПричинаНетрудоспособности = ПричинаНетрудоспособности;
			Объект.ПроцентОплаты = ПроцентОплаты;
			Объект.ЯвляетсяПродолжениемБолезни = ЯвляетсяПродолжениемБолезни;
			Объект.ПервичныйБольничныйЛист = ПервичныйБольничныйЛист;
			Объект.ДатаНачалаСобытия = ДатаНачалаСобытия;
			Объект.ДатаНачала = ДатаНачала;
			Объект.ДатаНачалаОплаты = ДатаНачалаОплаты;
			Объект.ДатаОкончания = ДатаОкончания;
			Объект.ДатаНарушенияРежима = ДатаНарушенияРежима;
			Объект.ПособиеОтражаетсяВРеглУчетеТекущимДокументом = ПособиеОтражаетсяВРеглУчетеТекущимДокументом;
			Объект.ОграничениеПособия = ОграничениеПособия;
			Объект.НомерВходящегоДокумента = НомерВходящегоДокумента;
			Объект.СерияВходящегоДокумента = СерияВходящегоДокумента;
			Объект.ПерерассчитываемыйДокумент = ПерерассчитываемыйДокумент;
			Объект.ПричинаНетрудоспособностиПереходногоПериода = ПричинаНетрудоспособностиПереходногоПериода;
			Объект.ПроцентОплатыПереходногоПериода = ПроцентОплатыПереходногоПериода;
			Объект.ОграничениеПособияПереходногоПериода = ОграничениеПособияПереходногоПериода;
			Объект.СлучайУходаЗаБольнымРебенкомПереходногоПериода = СлучайУходаЗаБольнымРебенкомПереходногоПериода;
			Объект.СтратегияОтраженияВУчете = СтратегияОтраженияВУчете;
			Объект.УдалитьПриказ = УдалитьПриказ;
			Объект.ПодпадаетПодЕНВД = ПодпадаетПодЕНВД;
			Объект.СлучайУходаЗаБольнымРебенком = СлучайУходаЗаБольнымРебенком;
			Объект.ДнейОплаты = ДнейОплаты;
			Объект.ВидРасчета = ВидРасчета;
			Объект.ДоплачиватьДоПолногоСреднегоЗаработка = ДоплачиватьДоПолногоСреднегоЗаработка;
			Объект.ВидРасчетаДоплаты = ВидРасчетаДоплаты;
			Объект.ПериодРасчетаСреднегоЗаработкаНачало = ПериодРасчетаСреднегоЗаработкаНачало;
			Объект.ПериодРасчетаСреднегоЗаработкаОкончание = ПериодРасчетаСреднегоЗаработкаОкончание;
			Объект.ПроцентОплатыБезЛьгот = ПроцентОплатыБезЛьгот;
			Объект.ОграничениеПособияБезЛьгот = ОграничениеПособияБезЛьгот;
			Объект.ПрименятьЛьготыПриНачисленииПособия = ПрименятьЛьготыПриНачисленииПособия;
			Объект.ВыплатаЗаСчетФедеральногоБюджета = ВыплатаЗаСчетФедеральногоБюджета;
			Объект.ВидРасчетаЗаСчетРаботодателя = ВидРасчетаЗаСчетРаботодателя;
			Объект.УчитыватьЗаработокПредыдущихСтрахователей = УчитыватьЗаработокПредыдущихСтрахователей;
			Объект.ДнейОплатыРаботодателем = ДнейОплатыРаботодателем;
			Объект.НеВыплачиватьПособие = НеВыплачиватьПособие;
			Объект.РасчетПоПравилам2010Года = РасчетПоПравилам2010Года;
			Объект.УсловияИсчисленияКод1 = УсловияИсчисленияКод1;
			Объект.УсловияИсчисленияКод2 = УсловияИсчисленияКод2;
			Объект.УсловияИсчисленияКод3 = УсловияИсчисленияКод3;
			Объект.СтажЛет = СтажЛет;
			Объект.СтажМесяцев = СтажМесяцев;
			Объект.СтажБезНестраховыхПериодовЛет = СтажБезНестраховыхПериодовЛет;
			Объект.СтажБезНестраховыхПериодовСтажМесяцев = СтажБезНестраховыхПериодовСтажМесяцев;
			Объект.ПеречислятьПособиеПочтовымПереводом = ПеречислятьПособиеПочтовымПереводом;
			Объект.Банк = Банк;
			Объект.НаименованиеБанка = НаименованиеБанка;
			Объект.БИКБанка = БИКБанка;
			Объект.НомерЛицевогоСчета = НомерЛицевогоСчета;
			Объект.АдресПочтовый = АдресПочтовый;
			Объект.Фамилия = Фамилия;
			Объект.Имя = Имя;
			Объект.Отчество = Отчество;
			Объект.ВидДокумента = ВидДокумента;
			Объект.СерияДокумента = СерияДокумента;
			Объект.НомерДокумента = НомерДокумента;
			Объект.ДатаВыдачиДокумента = ДатаВыдачиДокумента;
			Объект.ДатаДействияДокумента = ДатаДействияДокумента;
			Объект.ПериодПростояС = ПериодПростояС;
			Объект.ПериодПростояПо = ПериодПростояПо;
			Объект.РасчетПособияИзТарифнойСтавки = РасчетПособияИзТарифнойСтавки;
			Объект.ДолжностьУполномоченного = ДолжностьУполномоченного;
			Объект.Уполномоченный = Уполномоченный;
			Объект.ПоставленаНаУчетВРанниеСрокиБеременности = ПоставленаНаУчетВРанниеСрокиБеременности;
			Объект.ДатаВыдачиБольничного = ДатаВыдачиБольничного;
			Объект.КодПричиныНетрудоспособности = КодПричиныНетрудоспособности;
			Объект.ДополнительныйКодПричиныНетрудоспособности = ДополнительныйКодПричиныНетрудоспособности;
			Объект.ВторойКодПричиныНетрудоспособности = ВторойКодПричиныНетрудоспособности;
			Объект.ДатаИзмененияКодаПричиныНетрудоспособности = ДатаИзмененияКодаПричиныНетрудоспособности;
			Объект.ДатаСправкиБеременной = ДатаСправкиБеременной;
			Объект.ПериодНахожденияВСтационареСРебенкомС = ПериодНахожденияВСтационареСРебенкомС;
			Объект.ПериодНахожденияВСтационареСРебенкомПо = ПериодНахожденияВСтационареСРебенкомПо;
			Объект.КодНарушенияРежима = КодНарушенияРежима;
			Объект.ДатаРегистрацииДокументовМСЭ = ДатаРегистрацииДокументовМСЭ;
			Объект.УстановленаИзмененаГруппаИнвалидности = УстановленаИзмененаГруппаИнвалидности;
			Объект.ДатаВыходаНаРаботу = ДатаВыходаНаРаботу;
			Объект.ЯвляетсяДубликатом = ЯвляетсяДубликатом;
			Объект.АдресЛПУ = АдресЛПУ;
			Объект.НаименованиеЛПУ = НаименованиеЛПУ;
			Объект.ОГРН_ЛПУ = ОГРН_ЛПУ;
			Объект.НомерЛисткаПоОсновномуМестуРаботы = НомерЛисткаПоОсновномуМестуРаботы;
			Объект.ДатаОкончанияПутевки = ДатаОкончанияПутевки;
			Объект.НомерПутевки = НомерПутевки;
			Объект.ОГРН_Санатория = ОГРН_Санатория;
			Объект.НомерЛисткаПродолжения = НомерЛисткаПродолжения;
			Объект.ДатаНаправленияВБюроМСЭ = ДатаНаправленияВБюроМСЭ;
			Объект.ДатаОсвидетельствованияМСЭ = ДатаОсвидетельствованияМСЭ;
			Объект.НовыйСтатусНетрудопособного = НовыйСтатусНетрудопособного;
			Объект.ДатаНовыйСтатусНетрудопособного = ДатаНовыйСтатусНетрудопособного;
			Объект.КемВыданДокумент = КемВыданДокумент;
			Объект.ГруппаИнвалидности = ГруппаИнвалидности;
			Объект.КодПричиныПерерасчета = КодПричиныПерерасчета;
			Объект.НДФЛсПособия = НДФЛсПособия;
			Объект.КоррСчетБанка = КоррСчетБанка;
			Объект.НомерСправкиБеременной = НомерСправкиБеременной;
			Объект.НаименованиеДокументаНаПроживание = НаименованиеДокументаНаПроживание;
			Объект.СерияДокументаНаПроживание = СерияДокументаНаПроживание;
			Объект.НомерДокументаНаПроживание = НомерДокументаНаПроживание;
			Объект.ДатаВыдачиДокументаНаПроживание = ДатаВыдачиДокументаНаПроживание;
			Объект.АдресРегистрации = АдресРегистрации;
			Объект.Телефон = Телефон;
			Объект.ТарифнаяСтавкаОклад = ТарифнаяСтавкаОклад;
			Объект.СреднедневнойЗаработокНаПериодПростоя = СреднедневнойЗаработокНаПериодПростоя;
			Объект.ТелефонСоставителя = ТелефонСоставителя;
			Объект.АдресПочтовыйКодПоКЛАДР = АдресПочтовыйКодПоКЛАДР;
			Объект.АдресРегистрацииКодПоКЛАДР = АдресРегистрацииКодПоКЛАДР;
			Объект.АдресЛПУКодПоКЛАДР = АдресЛПУКодПоКЛАДР;
			Объект.ЛПУ = ЛПУ;
			Объект.НовыйПорядокРасчетаПособияПоМатеринствуПриИсправлении = НовыйПорядокРасчетаПособияПоМатеринствуПриИсправлении;
			return Объект;
		}
		
		private static readonly Hashtable Кэш = new Hashtable(1000);
		
		public static V82.ДокументыСсылка.НачислениеПоБольничномуЛисту ВзятьИзКэша(byte[] УникальныйИдентификатор)
		{
			var УИ = new Guid(УникальныйИдентификатор);
			if (Кэш.ContainsKey(УИ))
			{
				return (V82.ДокументыСсылка.НачислениеПоБольничномуЛисту)Кэш[УИ];
			}
			var Ссылка = new V82.ДокументыСсылка.НачислениеПоБольничномуЛисту(УникальныйИдентификатор);
			Кэш.Add(УИ, Ссылка);
			return Ссылка;
		}
		
		public void СериализацияProtoBuf(Stream Поток)
		{
			Serializer.Serialize(Поток,this);
		}
		
		public string СериализацияJson()
		{
			return this.ToJson();
		}
		
		public string СериализацияXml()
		{
			return this.ToXml();
		}
	}
}